using System;
using System.IO;

namespace Caramel.IO
{
	public interface IFileInfo
	{
		StreamWriter AppendText();

		IFileInfo CopyTo(string destFileName, bool overwrite);

		Stream Create();

		StreamWriter CreateText();

		void Decrypt();

		void Encrypt();

		//FileSecurity GetAccessControl();

		//FileSecurity GetAccessControl(AccessControlSections includeSections);

		void MoveTo(string destFileName);

		Stream Open(FileMode mode, FileAccess access, FileShare share);

		Stream OpenRead();

		StreamReader OpenText();

		Stream OpenWrite();

		IFileInfo Replace(string destinationFileName, string destinationBackupFileName, bool ignoreMetadataErrors);

		//void SetAccessControl(FileSecurity fileSecurity);

		IDirectoryInfo Directory { get; }

		string DirectoryName { get; }

		bool IsReadOnly { get; set; }

		long Length { get; }
	}
}
